const fs = require('fs')

//查找所有学生
function findAll(callback) {
    fs.readFile('./f.json', 'utf8', (err, data) => {
        if (err) {
            return callback(err)
        }
        callback(null, JSON.parse(data).student)
    })
}


// 通过id查具体对象  
function findStudetById(id, callback) {
    fs.readFile('./f.json', 'utf8', (err, data) => {
        if (err) {
            return callback(err)
        }
        // 吧字符串转换成对象
        data = JSON.parse(data)
        // for(let i=0;i<data.students.length;i++){
        //     if(data.students[i].id === id){
        //         callback(null,data.students[i])
        //         break
        //     }
        // }
        let student = data.students.find(item => {
            return item.id === id
        })
        callback(null, student)
    })
}


//添加一个学生
function addStudent(student, callback) {
    //读取文件
    fs.readFile('./f.json', 'utf8', (err, data) => {
        if (err) {
            return callback(err)
        }
        //吧json字符串转换为json对象
        data = JSON.parse(data)
        //获取数据最后一个对象，并把它的id+1，得到一个新的id
        let id = data.students[data.students.length - 1].id + 1
        //吧字符串类ing学生，转换为对象类型学生
        let s = JSON.parse(student)
        //动态给学生添加一个id属性
        s.id = id
        //吧传递过来的学生对象 添加到数组末尾
        data.students.push(s)
        //吧新数组，重新写回到文件内
        fs.writeFile('./f.json', JSON.stringify(data), (err) => {
            if (err) {
                return callback(err)
            }
            callback(null)
        })
    })
}


//通过id 删除一个学生
function deleteStudentById(id, callback) {
    fs.readFile('./f.json', 'utf8', (err, data) => {
        if (err) {
            return callback(err)
        }
        data = JSON.parse(data)

        //获取指定对象在数组里面的下标
        let index = data.students.findIndex(item => {
            return item.id === id
        })
        //删除指定对象
        data.students.splice(index, 1)
        //吧删除完之后的数据重新写回文件中
        fs.writeFile('./f.json', JSON.stringify(data), (err) => {
            if (err) {
                return callback(err)
            }
            callback(null)
        })
    })
}


//修改学生信息
function updataStudent(student, callback) {
    fs.readFile('./f.json', 'utf8', (err, data) => {
        if (err) {
            return callback(err)
        }
        //吧传递过来的字符串转换成对象
        data = JSON.parse(data)
        student = JSON.parse(student)
        //查找指定的对象
        let stu = data.students.find(item => {
            return item.id === student.id
        })
        for (const key in student) {
            stu[key] = student[key]
        }
        //删除后数据重新写入文件
        fs.writeFile('./f.json', JSON.stringify(data), err => {
            if (err) {
                return callback(err)
            }
            callback(null)
        })
    })
}


exports.findAll = findAll
exports.findStudetById = findStudetById
exports.addStudent = addStudent
exports.deleteStudentById = deleteStudentById
exports.updataStudent = updataStudent